package models

import (
	"fmt"

	_ "github.com/go-sql-driver/mysql"
	"github.com/jmoiron/sqlx"
)

var Db *sqlx.DB

func init() {
	database, err := sqlx.Open("mysql", "root:root@tcp(127.0.0.1:3306)/go_blog")
	if err != nil {
		fmt.Println("open mysql failed,", err)
		return
	}
	database.SetMaxOpenConns(200)
	Db = database
	//defer Db.Close() // 注意这行代码要写在上面err判断的下面
}

func Selects(sql string) map[int]map[string]string {

	// 查询数据
	//查询数据，取所有字段
	rows2, _ := Db.Query(sql)

	//返回所有列
	cols, _ := rows2.Columns()
	//这里表示一行所有列的值，用[]byte表示
	vals := make([][]byte, len(cols))

	//这里表示一行填充数据
	scans := make([]interface{}, len(cols))
	//这里scans引用vals，把数据填充到[]byte里
	for k, _ := range vals {
		scans[k] = &vals[k]
	}
	// fmt.Println(scans)
	i := 0
	result := make(map[int]map[string]string)
	for rows2.Next() {
		//填充数据
		rows2.Scan(scans...)
		//每行数据
		row := make(map[string]string)
		//把vals中的数据复制到row中
		for k, v := range vals {
			key := cols[k]
			//这里把[]byte数据转成string
			row[key] = string(v)
		}
		//放入结果集
		result[i] = row
		i++
	}
	defer rows2.Close()
	//fmt.Println(result)
	// for k, v := range result {
	// 	fmt.Printf("第%d行", k)
	// 	fmt.Println(v["ue_id"] + "===>" + v["ue_account"] + "===>" + v["zhxm"])
	// }
	return result
}
